#include "delay.h"
#include "gpio.h"
#include "stc8g.h"
#include "uart.h"
#include <stdio.h>

#define printf printf_small

void GPIO_config(void);

#define TEST_PIN P5_4

void main()
{
	delay_ms(200);

	GPIO_config();

	uart_initial();

	printf("Hello world!\r\n");

	int loop_cnt = 0;
	while (1) {
		loop_cnt++;
		if ((loop_cnt % 20) == 0) {
			printf("loop\r\n");
		}

		TEST_PIN = 1;
		delay_ms(10);

		TEST_PIN = 0;
		delay_ms(10);

		for (int i = 0; i < 100; i++) {
			TEST_PIN = 1;
			delay_us(50);

			TEST_PIN = 0;
			delay_us(50);
		}
	}
}

void GPIO_config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	GPIO_InitStructure.Pin = GPIO_Pin_4;
	GPIO_InitStructure.Mode = GPIO_OUT_PP;
	GPIO_Inilize(GPIO_P5, &GPIO_InitStructure);

	GPIO_InitStructure.Pin = GPIO_Pin_3;
	GPIO_InitStructure.Mode = GPIO_OUT_PP;
	GPIO_Inilize(GPIO_P3, &GPIO_InitStructure);

	GPIO_InitStructure.Pin = GPIO_Pin_2;
	GPIO_InitStructure.Mode = GPIO_OUT_PP;
	GPIO_Inilize(GPIO_P3, &GPIO_InitStructure);

	GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_1;
	GPIO_InitStructure.Mode = GPIO_PullUp;
	GPIO_Inilize(GPIO_P3, &GPIO_InitStructure);
}

int putchar(int c)
{
	SBUF = c;

	/* assumes UART is initialized */

	while (!TI)
		;
	TI = 0;
}